# 下列脚本鲁棒性高在哪？有没有可复用性？
'''脚本的工作是否清晰可见？
    1.会自动打印url容器的长度，让人能够预期输出结果。
    2.彩色打印页面序号，让用户知道当前是哪一个网站成功或失败。
    ...
'''
import requests as res
import time
import random
# 谁做什么？
# request对象向哪里发送get请求?向几个网站发起请求。
# 怎么做？循环遍历urls列表，发送get请求。装上请求头、延时。
# 结果如何？打印出每个请求的状态码和响应内容。
def send_requests(input_urls):
    '''批量发送请求
    :param input_urls: 输入的url列表
    behavior: 批量发送请求，并打印结果。
    :return: None
    '''
    # 判断条件变量，如果为空，则使用默认的urls。
    if len(input_urls) == 0:
        print("urls is None, using default urls")
        urls = [f"https://guangzhou.qfang.com/garden/n{i}" for i in range(1, 5)]
    else:
        urls = input_urls
    print("url's length:" ,len(urls))
    heaters = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}
    # 初始化result容器
    results = []
    for i in range(len(urls)):
        time.sleep(random.randint(1,3))
        result = res.get(urls[i],headers=heaters) 
        if result.status_code == 200:
            # 所以内容都应该看吗？头尾就行了,头尾30个一共60个字符。
            # 怎么让输出带点颜色？用033[1;32;40m]方法
            print("\033[1;32;40m" + f"{i+1}th website\n" + "\033[0m")            
            print(result.text[:30],"...",result.text[-30:-1])
            results.append(result)
    return results

if __name__ == "__main__":
    a=send_requests([])
    print(len(a))
    print(a[0].text[:30])